package com.yonyou.crm.sys.modules.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.yonyou.crm.common.biz.service.BaseBizServiceImpl;
import com.yonyou.crm.sys.modules.constants.ClientType;
import com.yonyou.crm.sys.modules.constants.LayoutType;
import com.yonyou.crm.sys.modules.entity.LayoutCatalogVO;

@Service
public class LayoutCatalogBizServiceImpl extends BaseBizServiceImpl<LayoutCatalogVO>{

	private final int LayoutTypeView = 1;
	private final int LayoutTypeEdit = 2;
	private final int LayoutTypeList = 3;
	/**
	 * 新增和详情布局可用分类
	 * @param objId
	 * @return
	 */
public List<LayoutCatalogVO> getLayoutCatalogList(Long objId) {
	Map<String, Object> paramMap = new HashMap<String, Object>();
	paramMap.put("objId", objId);
	List<LayoutCatalogVO> layoutCatalogVOs = dao.selectVoList(LayoutCatalogVO.class, "ListLayoutCatalog", paramMap);
	Iterator<LayoutCatalogVO> iterator = layoutCatalogVOs.iterator();
	while (iterator.hasNext()) {
		LayoutCatalogVO layoutCatalogVO = iterator.next();
		if (layoutCatalogVO.getLayoutType() !=LayoutTypeView && layoutCatalogVO.getLayoutType() !=LayoutTypeEdit) {
			iterator.remove();
		}
	}
	if (layoutCatalogVOs.size() == 0) {
		return getDefaultLayoutCatalogList();
	} else {
		return layoutCatalogVOs;
	}
}

/**
 * 列表布局可用分类
 * @param objId
 * @return
 */
public List<LayoutCatalogVO> getListLayoutCatalogList(Long objId) {
	Map<String, Object> paramMap = new HashMap<String, Object>();
	paramMap.put("objId", objId);
	List<LayoutCatalogVO> layoutCatalogVOs = dao.selectVoList(LayoutCatalogVO.class, "ListLayoutCatalog", paramMap);
	Iterator<LayoutCatalogVO> iterator = layoutCatalogVOs.iterator();
	while (iterator.hasNext()) {
		LayoutCatalogVO layoutCatalogVO = iterator.next();
		if (layoutCatalogVO.getLayoutType() !=LayoutTypeList) {
			iterator.remove();
		}
	}
	if (layoutCatalogVOs.size() == 0) {
		return getDefaultListLayoutCatalogList();
	} else {
		return layoutCatalogVOs;
	}
}

private  List<LayoutCatalogVO> getDefaultLayoutCatalogList () {
	List<LayoutCatalogVO> layoutCatalogVOs = new ArrayList<LayoutCatalogVO>();
	for( ClientType ct: ClientType.values()) {
		for( LayoutType lt: LayoutType.values()) {
			LayoutCatalogVO layoutCatalogVO = new LayoutCatalogVO();
			layoutCatalogVO.setClientType(ct.getIndex());
			layoutCatalogVO.setLayoutType(lt.getIndex());
			layoutCatalogVOs.add(layoutCatalogVO);
		}		
	}
	return layoutCatalogVOs;
}

private  List<LayoutCatalogVO> getDefaultListLayoutCatalogList () {
	List<LayoutCatalogVO> layoutCatalogVOs = new ArrayList<LayoutCatalogVO>();
	for( ClientType ct: ClientType.values()) {
			LayoutCatalogVO layoutCatalogVO = new LayoutCatalogVO();
			layoutCatalogVO.setClientType(ct.getIndex());
			layoutCatalogVO.setLayoutType(LayoutTypeList);
			layoutCatalogVOs.add(layoutCatalogVO);
	}
	return layoutCatalogVOs;
}
}



